package com.xbai.spark.core.transform

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

/**
  * sortBy(func,[ascending], [numTasks]) 算子
  * 作用：使用 func 先对数据进行处理，按照处理后的数据比较结果排序，默认为正序。
  * 案例：创建一个RDD，按照不同的规则进行排序
  *
  * @author xbai
  * @Date 2020/12/30
  */
object Spark13_SortBy {
  def main(args: Array[String]): Unit = {
    val conf: SparkConf = new SparkConf().setMaster("local[*]").setAppName("sortBy")
    val sc = new SparkContext(conf)

    // 按照自身大小排序
    val listRDD: RDD[Int] = sc.parallelize(List(2, 1, 3, 4))
    val sortByRDD1: RDD[Int] = listRDD.sortBy(x => x)
    sortByRDD1.collect().foreach(print)

    val sortByRDD2: RDD[Int] = listRDD.sortBy(x=>x, ascending = false)
    sortByRDD2.collect().foreach(print)

    val sortByRDD3: RDD[Int] = listRDD.sortBy(x => x % 3)
    sortByRDD3.collect().foreach(print)
  }
}
